/**
 * 给你一棵二叉树的根节点 root ，翻转这棵二叉树，并返回其根节点
 */
//二叉树的结构的构造
   class TreeNode {
      int val;
      TreeNode left;
      TreeNode right;

      TreeNode() {
      }

      TreeNode(int val) {
          this.val = val;
      }

      TreeNode(int val, TreeNode left, TreeNode right) {
          this.val = val;
          this.left = left;
          this.right = right;
      }
  }

   class Solution {
       public TreeNode invertTree(TreeNode root) {
           //如果root为空节点则返回null
           if(root == null){
               return null;
           }
           //交换左右两个节点
           swapNode(root);

           //交换当前节点的左子树的两个节点
           invertTree(root.left);
           //交换当前节点的右子树的两个节点
           invertTree(root.right);

           return root;
       }
       //交换左右两个节点
       public void swapNode(TreeNode root){
           //定义一个临时节点存储左右节点其中一个节点
           TreeNode pos = root.left;
           root.left = root.right;
           root.right = pos;
       }
   }